/*
 *
 */

#ifndef GKT_USER_PASSWORD_H
#define GKT_USER_PASSWORD_H

#if defined(GKT_CONFIG_KEYPAD_ENABLE) && GKT_CONFIG_KEYPAD_ENABLE

#define GKT_USER_PASSWORD_ENABLE	1

#define GKT_USER_PASSWORD_ADMIN_MAXNUMS	\
	GKT_CONFIG_USER_PASSWORD_ADMIN_MAXNUMS
#define GKT_USER_PASSWORD_NORMAL_MAXNUMS	\
	GKT_CONFIG_USER_PASSWORD_NORMAL_MAXNUMS
#ifdef GKT_CONFIG_USER_PASSWORD_GUEST_MAXNUMS
#define GKT_USER_PASSWORD_GUEST_MAXNUMS	\
	GKT_CONFIG_USER_PASSWORD_GUEST_MAXNUMS
#else
#define GKT_USER_PASSWORD_GUEST_MAXNUMS	0
#endif

#ifdef GKT_CONFIG_USER_PASSWORD_MINSIZE
#define GKT_USER_PASSWORD_MINSIZE	\
	GKT_CONFIG_USER_PASSWORD_MINSIZE
#else
#define GKT_USER_PASSWORD_MINSIZE	6
#endif
#ifdef GKT_CONFIG_USER_PASSWORD_MAXSIZE
#define GKT_USER_PASSWORD_MAXSIZE	\
	GKT_CONFIG_USER_PASSWORD_MAXSIZE
#else
#define GKT_USER_PASSWORD_MAXSIZE	10
#endif
#if (GKT_USER_PASSWORD_MAXSIZE < GKT_USER_PASSWORD_MINSIZE)
#error "PASSWORD_MAXSIZE should >= PASSWORD_MINSIZE"
#endif

#ifdef GKT_CONFIG_USER_PASSWORD_SCRAMBLE_MAXSIZE
#if (GKT_CONFIG_USER_PASSWORD_SCRAMBLE_MAXSIZE >= GKT_USER_PASSWORD_MAXSIZE)
#define GKT_USER_PASSWORD_SCRAMBLE_MAXSIZE	\
	GKT_CONFIG_USER_PASSWORD_SCRAMBLE_MAXSIZE
#else
#define GKT_USER_PASSWORD_SCRAMBLE_MAXSIZE	GKT_USER_PASSWORD_MAXSIZE
#endif
#else
#define GKT_USER_PASSWORD_SCRAMBLE_MAXSIZE	24
#endif

#ifdef GKT_CONFIG_USER_PASSWORD_DYNAMIC_ENABLE
#define GKT_USER_PASSWORD_DYNAMIC_ENABLE	\
	GKT_CONFIG_USER_PASSWORD_DYNAMIC_ENABLE
#else
#define GKT_USER_PASSWORD_DYNAMIC_ENABLE	0
#endif

int gkt_user_password_is_exist(const uint8_t *data,
				uint32_t length);

#else
#define GKT_USER_PASSWORD_ENABLE	0
#define GKT_USER_PASSWORD_ADMIN_MAXNUMS	0
#define GKT_USER_PASSWORD_NORMAL_MAXNUMS	0
#define GKT_USER_PASSWORD_GUEST_MAXNUMS	0
#define GKT_USER_PASSWORD_DYNAMIC_ENABLE	0
#endif

#define GKT_USER_PASSWORD_MAXNUMS	\
	(GKT_USER_PASSWORD_ADMIN_MAXNUMS + \
		GKT_USER_PASSWORD_NORMAL_MAXNUMS + \
		GKT_USER_PASSWORD_GUEST_MAXNUMS)

#endif	/* GKT_USER_PASSWORD_H */

